package com.ladybug.flow.common.utils;

import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;

/**
 * @author xianglongfei
 * @description
 * @createDate 2023/1/11 9:59
 */
public class BeanUtils {
    /**
     * 实体类集合转化
     *
     * @param objs
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> List<T> copy(List<?> objs, Class<T> clazz) {
        List<T> list = new ArrayList<>();
        if (objs.isEmpty()) {
            return list;
        }
        for (Object source : objs) {
            //把源对象类型强制转换为目标对象
            T target = JSON.parseObject(JSON.toJSONString(source), clazz);
            //把源对象属性赋值给目标对象
            BeanUtil.copyProperties(source, target);
            list.add(target);
        }
        return list;
    }

    /**
     * 实体类转化
     *
     * @param obj
     * @param clazz
     * @return
     */
    public static <T>T copyEntity(Object obj, Class<T> clazz) {
        if (obj == null) {
            return null;
        }
        //把源对象类型强制转换为目标对象
        T target = JSON.parseObject(JSON.toJSONString(obj), clazz);
        //把源对象属性赋值给目标对象
        BeanUtil.copyProperties(obj, target);
        return target;
    }
}
